#!/bin/bash

# 记账本PWA部署脚本

echo "📱 准备部署记账本PWA应用..."

PROJECT_ROOT="/home/zhangdaye/node_vue"
cd "$PROJECT_ROOT"

# 获取本机IP地址
LOCAL_IP=$(hostname -I | awk '{print $1}')

# 启动后端服务
echo "🚀 启动后端服务..."
cd backend
npm run dev &
BACKEND_PID=$!
echo "后端服务PID: $BACKEND_PID"

# 等待后端启动
sleep 3

# 启动前端服务 (使用内置的preview服务器)
echo "🌐 启动前端PWA服务..."
cd "$PROJECT_ROOT/frontend"

# 使用Vite的preview模式服务构建的文件
npx vite preview --host 0.0.0.0 --port 5173 &
FRONTEND_PID=$!
echo "前端服务PID: $FRONTEND_PID"

# 等待服务启动
sleep 5

echo ""
echo "✅ 记账本PWA应用已启动!"
echo ""
echo "📱 手机访问方式："
echo "1. 确保手机连接到同一WiFi网络"
echo "2. 在手机浏览器中访问: http://${LOCAL_IP}:5173"
echo "3. 在浏览器菜单中选择'添加到主屏幕'或'安装应用'"
echo ""
echo "💻 电脑访问地址："
echo "- 本地: http://localhost:5173"
echo "- 网络: http://${LOCAL_IP}:5173"
echo ""
echo "🔧 后端API地址: http://${LOCAL_IP}:3000"
echo ""
echo "⚠️  重要说明："
echo "- 首次访问可能需要几秒钟加载"
echo "- 添加到主屏幕后可以像原生APP一样使用"
echo "- 支持离线缓存，无网络时也能查看已缓存的数据"
echo ""
echo "按 Ctrl+C 停止所有服务"

# 保存PID到文件，方便后续停止
echo "$BACKEND_PID" > /tmp/accounting-backend.pid
echo "$FRONTEND_PID" > /tmp/accounting-frontend.pid

# 创建停止脚本
cat > "$PROJECT_ROOT/stop-pwa.sh" << 'EOF'
#!/bin/bash
echo "🛑 停止记账本PWA服务..."

if [ -f /tmp/accounting-backend.pid ]; then
    BACKEND_PID=$(cat /tmp/accounting-backend.pid)
    kill $BACKEND_PID 2>/dev/null && echo "后端服务已停止"
    rm -f /tmp/accounting-backend.pid
fi

if [ -f /tmp/accounting-frontend.pid ]; then
    FRONTEND_PID=$(cat /tmp/accounting-frontend.pid)
    kill $FRONTEND_PID 2>/dev/null && echo "前端服务已停止"
    rm -f /tmp/accounting-frontend.pid
fi

# 清理其他可能的进程
pkill -f "npm run dev" 2>/dev/null
pkill -f "vite preview" 2>/dev/null

echo "✅ 所有服务已停止"
EOF

chmod +x "$PROJECT_ROOT/stop-pwa.sh"

# 监听中断信号，优雅停止服务
trap 'echo ""; echo "🛑 正在停止服务..."; kill $BACKEND_PID $FRONTEND_PID 2>/dev/null; rm -f /tmp/accounting-*.pid; exit 0' INT

# 保持脚本运行
wait